// 实现函数 partialUsingArguments，调用之后满足如下条件：
// 1、返回一个函数 result
// 2、调用 result 之后，返回的结果与调用函数 fn 的结果一致
// 3、fn 的调用参数为 partialUsingArguments 的第一个参数之后的全部参数以及 result 的调用参数

// apply实现
// function partialUsingArguments(fn) {
//   var arg1 = [].slice.call(arguments, 1)
//   return function () {
//     return fn.apply(null, arg1.concat([].slice.call(arguments)))
//   }
// }

// call实现
// function partialUsingArguments(fn) {
//   var arg1 = [].slice.call(arguments, 1)
//   return function () {
//     return fn.call(null, ...arg1, ...[].slice.call(arguments))
//   }
// }

// 不用calll也不用apply
function partialUsingArguments(fn) {
  var arg1 = [].slice.call(arguments, 1)
  return function () {
    return fn(...arg1, ...[].slice.call(arguments))
  }
}

function test () {
  console.log(...arguments)
}

partialUsingArguments(test,1,2,3)(4, 5, 6)
